#ifndef SDRAGON_SURFACE_H_INCLUDED
#define SDRAGON_SURFACE_H_INCLUDED

#include "SDragon_GeneralIncludes.h"
#include "SDR_Window.h"
#include "SDR_Surface.h"

#include "SDragon_Tools.h"

SDR_Surface * DLL_EXPORT SDR_Surface_new(uint16_t width, uint16_t height);
SDR_Surface * DLL_EXPORT SDR_Surface_newRGB(uint16_t width, uint16_t height, uint16_t red, uint16_t green, uint16_t blue);
SDR_Surface * DLL_EXPORT SDR_Surface_loadImage(const char * image);

SDR_Surface * DLL_EXPORT SDR_Surface_newFriend(SDR_Surface * surface);
uint8_t DLL_EXPORT SDR_Surface_changeFriend(SDR_Surface * surface, SDR_Surface * theFriend);
uint8_t DLL_EXPORT SDR_Surface_isFriendOf(SDR_Surface * surface, SDR_Surface * theFriend);

uint8_t DLL_EXPORT SDR_Surface_setPosition(SDR_Surface * surface, int16_t x, int16_t y);
uint8_t DLL_EXPORT SDR_Surface_setRect(SDR_Surface * surface, int16_t x, int16_t y, uint16_t w, uint16_t h);
uint8_t DLL_EXPORT SDR_Surface_removeRect(SDR_Surface * surface);
uint8_t DLL_EXPORT SDR_Surface_setAlpha(SDR_Surface * surface, uint8_t alpha);
uint8_t DLL_EXPORT SDR_Surface_show(SDR_Surface * surface);
uint8_t DLL_EXPORT SDR_Surface_hide(SDR_Surface * surface);
uint8_t DLL_EXPORT SDR_Surface_isPNG(SDR_Surface * surface);

SDR_Surface * DLL_EXPORT SDR_Surface_adapt(SDR_Window * window, SDR_Surface * surface);

uint8_t DLL_EXPORT SDR_Surface_blit(SDR_Window * window, SDR_Surface * surface);

void DLL_EXPORT SDR_Surface_free(SDR_Surface * surface);

#endif // SDRAGON_SURFACE_H_INCLUDED
